1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.whiteboard;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 import derelict.purple.account;
35 extern (C):
36 
37 alias _PurpleWhiteboardPrplOps PurpleWhiteboardPrplOps;
38 alias _PurpleWhiteboard PurpleWhiteboard;
39 alias _PurpleWhiteboardUiOps PurpleWhiteboardUiOps;
40 
41 struct _PurpleWhiteboard
42 {
43 	int state;
44 	PurpleAccount* account;
45 	char* who;
46 	void* ui_data;
47 	void* proto_data;
48 	PurpleWhiteboardPrplOps* prpl_ops;
49 	GList* draw_list;
50 }
51 
52 struct _PurpleWhiteboardUiOps
53 {
54 	void function (PurpleWhiteboard*) create;
55 	void function (PurpleWhiteboard*) destroy;
56 	void function (PurpleWhiteboard*, int, int) set_dimensions;
57 	void function (PurpleWhiteboard*, int, int) set_brush;
58 	void function (PurpleWhiteboard*, int, int, int, int) draw_point;
59 	void function (PurpleWhiteboard*, int, int, int, int, int, int) draw_line;
60 	void function (PurpleWhiteboard*) clear;
61 	void function () _purple_reserved1;
62 	void function () _purple_reserved2;
63 	void function () _purple_reserved3;
64 	void function () _purple_reserved4;
65 }
66 
67 struct _PurpleWhiteboardPrplOps
68 {
69 	void function (PurpleWhiteboard*) start;
70 	void function (PurpleWhiteboard*) end;
71 	void function (const(PurpleWhiteboard)*, int*, int*) get_dimensions;
72 	void function (PurpleWhiteboard*, int, int) set_dimensions;
73 	void function (const(PurpleWhiteboard)*, int*, int*) get_brush;
74 	void function (PurpleWhiteboard*, int, int) set_brush;
75 	void function (PurpleWhiteboard*, GList*) send_draw_list;
76 	void function (PurpleWhiteboard*) clear;
77 	void function () _purple_reserved1;
78 	void function () _purple_reserved2;
79 	void function () _purple_reserved3;
80 	void function () _purple_reserved4;
81 }
82 
83 
84 version(Derelict_Link_Static)
85 {
86     extern( C ) nothrow 
87     {
88 	    void purple_whiteboard_set_ui_ops(PurpleWhiteboardUiOps* ops);
89         void purple_whiteboard_set_prpl_ops(PurpleWhiteboard* wb, PurpleWhiteboardPrplOps* ops);
90         PurpleWhiteboard* purple_whiteboard_create(PurpleAccount* account, const(char)* who, int state);
91         void purple_whiteboard_destroy(PurpleWhiteboard* wb);
92         void purple_whiteboard_start(PurpleWhiteboard* wb);
93         PurpleWhiteboard* purple_whiteboard_get_session(const(PurpleAccount)* account, const(char)* who);
94         void purple_whiteboard_draw_list_destroy(GList* draw_list);
95         gboolean purple_whiteboard_get_dimensions(const(PurpleWhiteboard)* wb, int* width, int* height);
96         void purple_whiteboard_set_dimensions(PurpleWhiteboard* wb, int width, int height);
97         void purple_whiteboard_draw_point(PurpleWhiteboard* wb, int x, int y, int color, int size);
98         void purple_whiteboard_send_draw_list(PurpleWhiteboard* wb, GList* list);
99         void purple_whiteboard_draw_line(PurpleWhiteboard* wb, int x1, int y1, int x2, int y2, int color, int size);
100         void purple_whiteboard_clear(PurpleWhiteboard* wb);
101         void purple_whiteboard_send_clear(PurpleWhiteboard* wb);
102         void purple_whiteboard_send_brush(PurpleWhiteboard* wb, int size, int color);
103         gboolean purple_whiteboard_get_brush(const(PurpleWhiteboard)* wb, int* size, int* color);
104         void purple_whiteboard_set_brush(PurpleWhiteboard* wb, int size, int color);
105     }
106 }
107 else
108 {
109     extern( C ) nothrow 
110     {
111 	    alias da_purple_whiteboard_set_ui_ops = void function(PurpleWhiteboardUiOps* ops);													
112         alias da_purple_whiteboard_set_prpl_ops = void function(PurpleWhiteboard* wb, PurpleWhiteboardPrplOps* ops);						
113         alias da_purple_whiteboard_create = PurpleWhiteboard* function(PurpleAccount* account, const(char)* who, int state);				
114         alias da_purple_whiteboard_destroy = void function(PurpleWhiteboard* wb);															
115         alias da_purple_whiteboard_start = void function(PurpleWhiteboard* wb);																
116         alias da_purple_whiteboard_get_session = PurpleWhiteboard* function(const(PurpleAccount)* account, const(char)* who);				
117         alias da_purple_whiteboard_draw_list_destroy = void function(GList* draw_list);														
118         alias da_purple_whiteboard_get_dimensions = gboolean function(const(PurpleWhiteboard)* wb, int* width, int* height);				
119         alias da_purple_whiteboard_set_dimensions = void function(PurpleWhiteboard* wb, int width, int height);								
120         alias da_purple_whiteboard_draw_point = void function(PurpleWhiteboard* wb, int x, int y, int color, int size);						
121         alias da_purple_whiteboard_send_draw_list = void function(PurpleWhiteboard* wb, GList* list);										
122         alias da_purple_whiteboard_draw_line = void function(PurpleWhiteboard* wb, int x1, int y1, int x2, int y2, int color, int size);	
123         alias da_purple_whiteboard_clear = void function(PurpleWhiteboard* wb);																
124         alias da_purple_whiteboard_send_clear = void function(PurpleWhiteboard* wb);														
125         alias da_purple_whiteboard_send_brush = void function(PurpleWhiteboard* wb, int size, int color);									
126         alias da_purple_whiteboard_get_brush = gboolean function(const(PurpleWhiteboard)* wb, int* size, int* color);						
127         alias da_purple_whiteboard_set_brush = void function(PurpleWhiteboard* wb, int size, int color);	
128     }
129 
130     __gshared
131     {
132 	    da_purple_whiteboard_set_ui_ops purple_whiteboard_set_ui_ops;
133 	    da_purple_whiteboard_set_prpl_ops purple_whiteboard_set_prpl_ops;
134 	    da_purple_whiteboard_create purple_whiteboard_create;
135 	    da_purple_whiteboard_destroy purple_whiteboard_destroy;
136 	    da_purple_whiteboard_start purple_whiteboard_start;
137 	    da_purple_whiteboard_get_session purple_whiteboard_get_session;
138 	    da_purple_whiteboard_draw_list_destroy purple_whiteboard_draw_list_destroy;
139 	    da_purple_whiteboard_get_dimensions purple_whiteboard_get_dimensions;
140 	    da_purple_whiteboard_set_dimensions purple_whiteboard_set_dimensions;
141 	    da_purple_whiteboard_draw_point purple_whiteboard_draw_point;
142 	    da_purple_whiteboard_send_draw_list purple_whiteboard_send_draw_list;
143 	    da_purple_whiteboard_draw_line purple_whiteboard_draw_line;
144 	    da_purple_whiteboard_clear purple_whiteboard_clear;
145 	    da_purple_whiteboard_send_clear purple_whiteboard_send_clear;
146 	    da_purple_whiteboard_send_brush purple_whiteboard_send_brush;
147 	    da_purple_whiteboard_get_brush purple_whiteboard_get_brush;
148 	    da_purple_whiteboard_set_brush purple_whiteboard_set_brush;
149     }
150 }